# Create your views here.

from django.db.models import Q
from django.shortcuts import render_to_response
from widpy.data.models import * 
from django.http import HttpResponse
from django.template import Context, loader

def search(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	b = request.GET.get('b', '')
	modo = request.GET.get('modo', '')
	cat = request.GET.get('cat', '')
	categoria = Categoria.objects.all()
	des=0
	administ=0
	superadmin=0
	grupo = 0
	if(is_auth):
		tipouser = User.objects.get(id=user_id)
		de = Q(groups__id='1') & Q(id=user_id)
		des = User.objects.filter(de)
		ad = Q(groups__id='2') & Q(id=user_id)
		administ = User.objects.filter(ad)
		
	if (des):
		grupo = grupo + 1
		des = 1
	else:
		des = 0
	if (administ):
		grupo = grupo + 1
		administ = 1
	else:
		administ = 0
	if (request.user.is_superuser):
		grupo = grupo + 1
		superadmin = 1
	else:
		superadmin = 0
		
	if cat == '':
		if b == 't' or modo == 'tem':
			if 'q' in request.GET and request.GET['q']:
				q = request.GET['q']
				clause =  Q(nombre_tema__icontains=q)| Q(descripcion__icontains=q) | Q(autor__icontains=q)
				#if request.user.tipo_usuario < 2:
				if des or administ or superadmin:
					items = Tema.objects.filter(clause).filter(privacidad=0).distinct()
				else:
					items = Tema.objects.filter(clause).distinct()
				#books = Temas.objects.filter(nombre_tema__icontains=q)
				if(is_auth):
					return render_to_response('search.html',
					{'query': items, 'results': q,'categoria': categoria, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				return render_to_response('search.html',
					{'query': items, 'results': q,'categoria': categoria, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
			else:
				if(is_auth):
					#if request.user.tipo_usuario < 2:
					if des or administ or superadmin:
						temas = Tema.objects.filter(privacidad=0)
					else:
						temas = Tema.objects.all()
				else:
					temas = Tema.objects.all()
				if(is_auth):
					return render_to_response('search.html',{'temas': temas,'categoria': categoria, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				return render_to_response('search.html',{'temas': temas,'categoria': categoria, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})

		elif b == 'w'or modo == 'wid':
			if 'q' in request.GET and request.GET['q']:
				q = request.GET['q']
				clause =  Q(nombre_widget__icontains=q)| Q(descripcion__icontains=q) | Q(autor__icontains=q)
				if(is_auth):
					#if request.user.tipo_usuario < 2:
					if des or administ or superadmin:
						items = Widget.objects.filter(clause).filter(privacidad=0).distinct()
					else:
						items = Widget.objects.filter(clause).distinct()
				else:
					items = Widget.objects.filter(clause).distinct()
				#books = Temas.objects.filter(nombre_tema__icontains=q)
				if(is_auth):
					return render_to_response('search.html',
					{'query': items, 'results': q, 'categoria': categoria,'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				else:
					return render_to_response('search.html',
					{'query': items, 'results': q, 'categoria': categoria,'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
			else:
				#b = request.GET.get('b', '')
				#return render_to_response('search.html',{'query': 'lo', 'results': 'jj', 'que_buscar': b})
				if(is_auth):
					#if request.user.tipo_usuario < 2:
					if des or administ or superadmin:
						widgets = Widget.objects.filter(privacidad=0)
					else:
						widgets = Widget.objects.all()
					if(is_auth):
						return render_to_response('search.html',{'temas': widgets,'categoria': categoria, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
						,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
					else:
						return render_to_response('search.html', {'query': items, 'results': q, 'categoria': categoria,'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
				else:
					widg = Widget.objects.all()
				return render_to_response('search.html',{'temas': widg, 'categoria': categoria, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
	#Dentro de categorias	
	elif 'cat' in request.GET and request.GET['cat']:
		c = request.GET['cat']
		p = Categoria.objects.get(nombre=c)
		id_cat = p.id
		clausecat =  Q(categoria__id__icontains=id_cat)

		if 'q' in request.GET and request.GET['q']:
			q = request.GET['q']
			
			if modo == 'wid':
				cat1 = Q(categoria__id__icontains=id_cat) & Q(nombre_widget__icontains=q)
				#if request.user.tipo_usuario < 2:
				if des or administ or superadmin:
					item1 = Widget.objects.filter(cat1).filter(privacidad=0).distinct()
				else:
					item1 = Widget.objects.filter(cat1).distinct()
				if(is_auth):
					return render_to_response('search.html',
					{'query': item1, 'results': q, 'categoria': categoria, 'buscar_cat': c,'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				else:
					return render_to_response('search.html',
					{'query': item1, 'results': q, 'categoria': categoria, 'buscar_cat': c,'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
			elif modo == 'tem':
				cat1 = Q(categoria__id__icontains=id_cat) & Q(nombre_tema__icontains=q)
				#if request.user.tipo_usuario < 2:
				if des or administ or superadmin:
					item1 = Tema.objects.filter(cat1).filter(privacidad=0).distinct()
				else:
					item1 = Tema.objects.filter(cat1).distinct()
				if(is_auth):
					return render_to_response('search.html',
					{'query': item1, 'results': q,'categoria': categoria, 'buscar_cat': c,'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				else:
					return render_to_response('search.html',
					{'query': item1, 'results': q,'categoria': categoria, 'buscar_cat': c,'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
		else:
			if modo == 'wid':
				#if request.user.tipo_usuario < 2:
				if des or administ or superadmin:
					itemscat = Widget.objects.filter(clausecat).filter(privacidad=0).distinct()
				else:
					itemscat = Widget.objects.filter(clausecat).distinct()
				if(is_auth):
					return render_to_response('search.html',{'temas': '', 'items_cat': itemscat, 'categoria': categoria, 'buscar_cat': c, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				else:
					return render_to_response('search.html',{'temas': '', 'items_cat': itemscat, 'categoria': categoria, 'buscar_cat': c, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
			elif modo == 'tem':
				#if request.user.tipo_usuario < 2:
				if des or administ or superadmin:
					itemscat = Tema.objects.filter(clausecat).filter(privacidad=0).distinct()
				else:
					itemscat = Tema.objects.filter(clausecat).distinct()
				if(is_auth):
					return render_to_response('search.html',{'temas': '', 'items_cat': itemscat, 'categoria': categoria, 'buscar_cat': c, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,'grupo':grupo})
				else:
					return render_to_response('search.html',{'temas': '', 'items_cat': itemscat, 'categoria': categoria, 'buscar_cat': c, 'que_buscar': '', 'user_id':user_id, 'is_auth':is_auth
					,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})
	if(is_auth):
		#if request.user.tipo_usuario < 2:
		if des or administ or superadmin:
			widg = Widget.objects.filter(privacidad=0)
		else:
			widg = Widget.objects.all()
		return render_to_response('search.html',{'temas': widg, 'categoria': categoria, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username, 'grupo':grupo})
	else:
		widg = Widget.objects.all()
		return render_to_response('search.html',{'temas': widg, 'categoria': categoria, 'que_buscar': 'w', 'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': 'guest','grupo':grupo})









